// 🌟 本代码为作者第一次独立完成的作品！ 🎉
// 功能：统计字符串中每个大写字母连续出现的最大次数，并输出第 k 大的次数
// 方法：使用快慢指针统计 + 哈希表记录 + 排序处理

#include <stdio.h>     
#include <string.h>     
#include <stdlib.h>     // qsort

int hashTable[26] = {0}; // step 1# 初始化哈希表，记录每个字母连续出现的最大次数（A~Z）

// step 2# 比较函数，用于 qsort 降序排列
int compare(const void *a, const void *b) {
    int valueA = *(const int *)a;
    int valueB = *(const int *)b;
    return valueB - valueA; // 降序排序
}

int main() {
    // step 3# 读取输入的字符串和整数 k
    char string[200];         // 存储输入字符串（只包含大写字母）
    scanf("%s", string);      // 读取字符串
    int k;
    scanf("%d", &k);          // 读取整数 k

    // step 4# 使用快慢指针统计连续相同字母的长度
    int fast = 0;             // 快指针，向前扫描
    int slow = 0;             // 慢指针，标记连续段起点
    int count = 0;            // 当前字母连续出现次数
    int len = strlen(string); // 预先计算字符串长度，避免重复调用

    while(fast < len) {
        // step 5# 向前推进 fast，直到字母不再相同，统计这一段的长度
        while (fast < len && string[slow] == string[fast]) {
            count++;
            fast++;
        }

        // step 6# 更新该字母的最大连续出现次数
        int index = string[slow] - 'A'; // 映射 A~Z 到下标 0~25
        if (count > hashTable[index]) {
            hashTable[index] = count;
        }

        // step 7# 移动 slow 到 fast，开始统计下一段
        slow = fast;
        count = 0;
    }

    // step 8# 对 hashTable 中的次数降序排序
    qsort(hashTable, 26, sizeof(int), compare); // 排序后第 k 大值在 hashTable[k-1]

    // step 9# 统计出现过的不同字母种类
    int hashCount = 0;
    for(int i = 0; i < 26; i++) {
        if (hashTable[i] >= 1) {
            hashCount++;
        }
    }

    // step 10# 判断是否存在第 k 多的字母，输出结果
    if (hashCount < k)
        printf("-1\n");             // 不足 k 种不同字母
    else
        printf("%d\n", hashTable[k-1]); // 输出第 k 大的次数

    return 0; // 程序正常结束
}
